20. Transferencia de ficheros con tu servidor FTP.


20.1.Introducción.

FTP son las siglas de File Transfer Protocol, protocolo de transferencia de ficheros. Nos permite subir o descargar ficheros desde un ordenador cliente a un servidor de forma transparente, es decir, sin que el usuario sea consciente de los distintos sistemas operativos implicados. FTP es un protocolo de la capa de aplicación de la pila TCP/IP, tal como SSH, Telnet o HTTP.

El principal inconveniente con el que siempre se ha descalificado este protocolo es la seguridad, pues toda la información se recibía y enviaba en ASCII plano, con lo que cualquier sniffer podría husmear la red y descubrir la password o apropiarse de los ficheros transferidos.

Vamos a configurar el servidor VSFTPD, cuya Web oficial es http://vsftpd.beasts.org/. No es la única alternativa, también dispones de ProFTPd y wu-ftpd. Los paquetes a instalar en ProFTPd son proftpd y gproftpd; una buena guía la puedes encontrar en http://www.vensign.com/2007/08/25/servidor-ftp-con-proftp-en-ubuntu-debian/.

VSFTPD es un servidor FTP para Linux con licencia GPL. Es seguro, rápido y estable. Además se trata de una solución madura y apoyada por muchas instituciones, entre ellas las comunidades de Debian y Ubuntu que lo citan como la preferida. Para mayor información puedes consultar las direcciones Web: http://www.guia-ubuntu.org/index.php?title=Servidor_de_FTP y http://es.wikipedia.org/wiki/FTP.


VSFTPD es seguro porque soporta encriptación a través de la integración con SSL.


20.2. Instalación del servidor FTP VSFTPD.

La instalación del servidor VSFTPD no puede ser más sencilla, basta con instalar el paquete vsftpd, ¡Ya tienes el servidor funcionando!


Si tienes instalado un cortafuegos deberás abrir el puerto 21 para permitir el tráfico al servidor FTP. Por otra parte, si quieres entrar al servidor FTP desde fuera de la red privada, deberás abrir este puerto en el Router.

Para probar tu servidor FTP (llamémosle ordenador S, Servidor) desde el mismo ordenador escribe:

ftp localhost

Si quieres probarlo desde otro ordenador en tu red (llamémosle ordenador cliente C, Cliente) local, teclea:

ftp direcciónIpServidorFTP

Por defecto, VSFTPD tiene habilitado el acceso anónimo, luego podrás acceder al servidor con el nombre de usuario anonymous y contraseña, tu dirección de correo electrónico. Si tecleas el signo de interrogación “?”, te mostrará las órdenes disponibles.

Si quieres obtener ayuda de una orden teclea:

? orden

Para salir escribe:

quit

Fíjate en el siguiente ejemplo:

? dir

list content of remote directory

Así esta orden lista el contenido del directorio remoto, en este caso si la ejecutas no obtendrás nada porque el directorio /home/ftp está vacío. Luego recuerda existen dos directorios a tener en cuenta:

* El directorio remoto al que accedes del servidor FTP, S. Si accedes como usuario anónimo este directorio es /home/ftp y sólo tendrás permisos de lectura.

* El directorio local de tu equipo cliente, C. Normalmente será /home/usuario.

Existen dos órdenes muy importantes: get para recuperar o descargar ficheros del servidor y put para subir archivos al servidor. Si tecleas put hola.txt (supongamos que tienes un fichero hola.txt en tu ordenador cliente), obtendrás la siguiente salida: 550 Permission denied, es decir, permiso denegado, 550 es un código de error. Como te comentamos si accedes como usuario anónimo, tienes permisos de lectura en la carpeta /home/ftp pero no de escritura.


20.3. Deshabilitando el acceso anónimo.

Vamos a configurar nuestro servidor FTP de una forma distinta, deshabilitaremos el acceso anónimo y habilitaremos el acceso de los usuarios del sistema. El directorio de configuración de los distintos servidores es /etc, el fichero es vsftpd.conf (nombre servidor “.” conf –configuración-), como puedes apreciar “nadie se ha muerto de creatividad”, la orden por tanto es: sudo gedit /etc/vsftpd.conf.

Veamos las distintas opciones:

Opciones

Significado

anonymous_enable=NO

Permitir el acceso anónimo, por defecto está en YES (si), aquí vamos a deshabilitarlo.

local_enable=YES

Descomenta esta línea, en otras palabras quita la almohadilla “#” del principio, para permitir a los usuarios locales poder acceder.

write_enable=YES

También debes descomentar esta línea si quieres por ejemplo poder subir archivos al servidor.

local_umask=022

local_umask (o si quieres acceso anónimo anon_umask) asigna a los ficheros subidos al servidor los permisos: rw-|r--|r-- que puede ser de utilidad en la mayoría de las configuraciones.

ftpd_banner Bienvenido al servidor FTP Libre

Permite mostrar un mensaje de bienvenida para los clientes del servidor FTP.

chroot_local_user=YES

Obliga a los usuarios a permanecer en su directorio HOME, en otras palabras no les permite “husmear” fuera de su directorio o parcela. Si quieres que ciertos usuarios se salten esta restricción, utiliza:

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

Crea dicho fichero e introduce los usuarios que quieras que puedan navegar libremente por el disco remoto.

Nos falta reiniciar el servidor:

/etc/init.d/vsftpd restart

e intentar acceder desde el cliente. Prueba primero con la cuenta anónima, no te debería dejar, luego prueba con un usuario del sistema, es decir, del servidor FTP. Introduce el login y contraseña de un usuario del servidor FTP, S y escribe la orden:

ls

Ahora debes poder visualizar el contenido del directorio HOME de dicho usuario (por ejemplo /home/joe). Finalmente teclea:

put hola.txt

En este caso, ahora si debe dejarte, ¿has comprobado que permisos tiene dicho fichero en el servidor?

Debes ir en el servidor FTP S al directorio home del usuario con el que te hayas logueado y teclear en la consola: (joe es nuestro usuario)

ls –l /home/joe/hola.txt

- r w - |r- -| r- - [...] (las barras verticales se incluyen sólo para mejorar la comprensibilidad)

Si quieres información mas detallada de las distintas opciones de configuración, escribe en la consola:

man vsftpd.conf


Quizás pueda parecerte una opción poco seria permitir a todos los usuarios del sistema acceder remotamente a tu servidor FTP. Si quieres “banear” ciertos usuarios, agrega estas líneas en tu fichero de configuración:

userlist_enable=YES
userlist_file=/etc/ miListaUsuariosBaneados

Luego edita miListaUsuariosBaneados e incluye en ella los usuarios que no quieras que accedan al servidor FTP.


20.4. Clientes FTP: FileZilla, gFTP, yafc, Kasablanca.

Por supuesto puedes utilizar clientes FTP de consola, un ejemplo sería YAFC, Yet Another FTP Client (otro cliente FTP), se instala con el paquete yafc y se lanza escribiendo en la consola:

yafc dirIPServidorFTP

¿Quizás puedas estarte preguntándote a quien se le ocurre crear un cliente en modo texto? Imagina que quieres diariamente subir cierta carpeta (miCarpeta) al servidor, bastaría con escribir este script, dadle permisos de ejecución (chmod a+x miScript) y lanzarlo (./miScript), además podrías incluirlo en el cron. Consulta http://ubuntulinuxhelp.com/automatic-ftp-backup-system-a-very-simple-solution/, para una discusión sobre el tema.

#!/bin/bash

yafc <<**

open ftp://nombreUsuario:contraseña@dirIPServidor:21/

put -rf /home/nombreUsuario/miCarpeta/*

close

Sin embargo, normalmente no querrás en el día a día estar utilizando órdenes de consola para subir o descargarte archivos de tu servidor FTP. Existen distintos clientes gráficos que te simplificarán mucho tu trabajo, veamos algunos de ellos:

Si quieres un cliente libre en Windows, una buena opción es FileZilla, se encuentra disponible en http://filezilla-project.org/.

Lánzalo en Inicio, Todos los programas, FileZilla FTP Client, FileZilla. Luego haz clic en el botón Abrir el Gestor de Sitios

Ahora tienes que hacer clic en Nuevo sitio y rellenar los campos: Servidor (dirección IP del servidor FTP), Tipo de servidor (FTP), Modo de acceso (Normal), Usuario y Contraseña.

Observa a la derecha el detalle del programa ya conectado al servidor FTP. Tiene dos paneles, el derecho rotulado Sitio remoto representa el directorio remoto, el izquierdo (Sitio local) representa la parte local de la ecuación.

Mover archivos es tan fácil como arrastrar y soltar. Para crear un directorio remoto, basta con hacer un clic en el botón derecho en el panel derecho y seleccionar la opción Crear directorio.

En GNOME (o Ubuntu) tenemos el programa gFTP. Se instala con el paquete gftp y se encuentra en Aplicaciones, Internet, gFTP.

Una vez lanzado haz clic en Conectar con el sitio especificado:

El programa te hará una serie de preguntas:

* Introduzca una URL a la que quiera conectarse: direcciónIP del servidor.

* Introduzca su nombre de usuario para este sitio.

* Por favor, introduzca su contraseña para este servidor:

Puedes observar en el panel inferior el mensaje típico de que el programa se entrega sin ninguna garantía, pero no te preocupes “va como la seda”. Observa las flechas, si quieres copiar al directorio remoto utiliza la flecha derecha; para descargar del servidor FTP utilizas la flecha izquierda, en ambos casos debes previamente seleccionar lo que quieres copiar. También haciendo clic en el botón derecho en el panel remoto (el de la derecha) puedes crear directorios, renombrar directorios, editar y visualizar archivos, etc. En éste último caso deberás indicar los programas de edición y visualización en FTP, Opciones. Una idea sería editar remotamente los ficheros de tu servidor Web con KompoZer.

Para KDE (Kubuntu) tenemos Kasablanca, aunque también podemos utilizarlo en GNOME. La dirección Web oficial de documentación y descarga es http://kasablanca.berlios.de/ pero en Ubuntu basta con instalar el paquete kasablanca.

Lo encontrarás en Aplicaciones, Internet, Casablanca. Una vez lanzado haz clic en el botón:

Tendrás que rellenar las opciones típicas: dirección Ip del servidor (Host:Port:), tu nombre de usuario (Username) y contraseña.

Cuando finalices de rellenar los campos haz clic en OK para conectar al servidor.

Observa la ventana de Kasablanca una vez conectada al servidor.

Es exactamente igual que el anterior salvo que este caso el panel derecho representa el lado local de la ecuación (el usuario lo hemos llamado joelocal) y el izquierdo el remoto.

Haciendo clic en el panel izquierdo podrás: borrar (Delete), renombrar (Rename), crear directorios (Mkdir) o descargar (Transfer). En el panel derecho podrás realizar las mismas operaciones, sólo que con Transfer subirás archivos al servidor.

Por supuesto, no hemos intentado ser exhaustivos. Para una discusión profunda sobre las diferentes opciones en Linux visita la siguiente dirección: http://linuxreviews.org/software/ftp-clients/.